/**
 * TDS PEC 4
 * Grupo 3H2M
 *
 * El paquete <code>edu.uoc.tds.pec4.server.bbdd</code> agrupa todos los
 * interfaces y clases que encapsulan los objetos de acceso a datos (DAO),para
 * realizar el acceso a datos. La base de datos es PostgreSQL.
 */
package edu.uoc.tds.pec4.server.bbdd;

import edu.uoc.tds.pec4.beans.CFisicaDTO;
import edu.uoc.tds.pec4.beans.CiudadDTO;
import edu.uoc.tds.pec4.beans.EquipamientoDTO;
import edu.uoc.tds.pec4.beans.PaisDTO;
import edu.uoc.tds.pec4.beans.ProvinciaDTO;
import edu.uoc.tds.pec4.beans.TipoEncuentroDTO;
import edu.uoc.tds.pec4.server.bbdd.exceptions.DataBaseDAOException;
import edu.uoc.tds.pec4.server.bbdd.exceptions.GestorDiccionarioException;
import java.rmi.RemoteException;
import java.util.List;

/** 
 * El interfaz <code>IMaestrosDAO</code> es el componente de software que suministra
 * una interfaz común entre la aplicación y la base de datos, relacionada con la
 * gestión de los listados de tablas maestras.<br />
 * Extiende la clase <code>DataBaseDAO</code><br />
 * Es el interfaz común que todas las implementaciones de IMaestrosDAO deben cumplir.<br />
 *
 * @author	Luis Rodríguez-Manzaneque Sánchez
 * @version	24/11/2011
 * @since	1.00
 * @see         edu.uoc.tds.pec4.server.bbdd.exceptions.DataBaseDAOException
 */
public interface IMaestrosDAO {

    /**
     * Devuelve la lista de paises que existen actualmente.
     * @return  La lista de todos los paises de la aplicación
     * @throws  DataBaseDAOException En caso de generarse una excepción de acceso
     *          a la base de datos se dispara al nivel superior
     */
    public List<PaisDTO> listaPaises() throws DataBaseDAOException;

    /**
     * Devuelve la lista de provincias
     * @param	idPais El identificador del pais del que se quieren obtener las provincias
     * @return  La lista de las provincias que pertencen al Provincia indicado
     * @throws  DataBaseDAOException En caso de generarse una excepción de acceso
     *          a la base de datos se dispara al nivel superior
     */
    public List<ProvinciaDTO> listaProvincias(int idPais) throws DataBaseDAOException;

    /**
     * Devuelve la lista de ciudades
     * @param	idProvincia El identificador del Provincia del que se quieren obtener las ciudades
     * @return  La lista de las ciudades que pertencen a la provincia indicada
     * @throws  DataBaseDAOException En caso de generarse una excepción de acceso
     *          a la base de datos se dispara al nivel superior
     */
    public List<CiudadDTO> listaCiudades(int idProvincia) throws DataBaseDAOException;
    
    /**
     * Devuelve la lista de encuentros
     * @return  La lista de los tipos de encuentro que existen
     * @throws  DataBaseDAOException En caso de generarse una excepción de acceso
     *          a la base de datos se dispara al nivel superior
     */
    public List<TipoEncuentroDTO> listaEncuentros () throws DataBaseDAOException;
        /**
     * Devuelve la lista de caracteristicas físicas
     * @return  La lista de los tipos de caracterísitcas físicas que existen
     * @throws  DataBaseDAOException En caso de generarse una excepción de acceso
     *          a la base de datos se dispara al nivel superior
     */
    public List<CFisicaDTO> listaCFisicas () throws DataBaseDAOException;
    
    /**
     * Devuelve la lista de equipamiento
     * @return  La lista de los equipamientos que existen
     * @throws  DataBaseDAOException En caso de generarse una excepción de acceso
     *          a la base de datos se dispara al nivel superior
     */
    public List<EquipamientoDTO> listaEquipamiento () throws DataBaseDAOException;
}
